gdk: Remove GdkWindowImpl->clear_region
authorBenjamin Otte <otte@redhat.com>
Sun, 15 Aug 2010 01:16:20 +0000 (03:16 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 26 Sep 2010 13:03:00 +0000 (15:03 +0200)
It was only used on the X11 backend and is easier to implement locally,
in particular when we want to allow backgrounds that X can't handle.

gdk/gdkwindow.c
gdk/gdkwindowimpl.h
gdk/x11/gdkwindow-x11.c

index 09368ae63716c1e80d6f048b69cd43b7d4b8a7ec..06835221b0c1f87530ff80e2836728f27fdfcfe4 100644 (file)
@@ -3840,7 +3840,6 @@ gdk_window_clear_region_internal (GdkWindow *window,
                                  gboolean   send_expose)
 {
   GdkWindowObject *private = (GdkWindowObject *)window;
-  GdkWindowImplIface *impl_iface;
 
   if (private->paint_stack)
     gdk_window_clear_backing_region (window, region);
@@ -3849,29 +3848,9 @@ gdk_window_clear_region_internal (GdkWindow *window,
       if (private->redirect)
        gdk_window_clear_backing_region_redirect (window, region);
 
-      impl_iface = GDK_WINDOW_IMPL_GET_IFACE (private->impl);
-
-      if (impl_iface->clear_region && clears_as_native (private))
-       {
-         cairo_region_t *copy;
-         copy = cairo_region_copy (region);
-         cairo_region_intersect (copy,
-                               private->clip_region_with_children);
-
-
-         /* Drawing directly to the window, flush anything outstanding to
-            guarantee ordering. */
-         gdk_window_flush (window);
-         impl_iface->clear_region (window, copy, send_expose);
-
-         cairo_region_destroy (copy);
-       }
-      else
-       {
-         gdk_window_clear_backing_region_direct (window, region);
-         if (send_expose)
-           gdk_window_invalidate_region (window, region, FALSE);
-       }
+      gdk_window_clear_backing_region_direct (window, region);
+      if (send_expose)
+        gdk_window_invalidate_region (window, region, FALSE);
     }
 }
 
index 0b9f507832ac0dcd1ec7074a79a25d4373f51274..fcb8ba235e92644719b0cf75a829c5d37ec7445e 100644 (file)
@@ -74,9 +74,6 @@ struct _GdkWindowImplIface
                                          GdkWindow       *new_parent,
                                          gint             x,
                                          gint             y);
-  void         (* clear_region)         (GdkWindow       *window,
-                                        cairo_region_t       *region,
-                                        gboolean         send_expose);
 
   void         (* set_device_cursor)    (GdkWindow       *window,
                                          GdkDevice       *device,
index 9aa9e8ed7e8a78657630c5455b41da27889cf55a..a505da77e2f5651a1bb557c7c68cb83567bec427 100644 (file)
@@ -1660,26 +1660,6 @@ gdk_window_x11_reparent (GdkWindow *window,
   return FALSE;
 }
 
-static void
-gdk_window_x11_clear_region (GdkWindow *window,
-                            cairo_region_t *region,
-                            gboolean   send_expose)
-{
-  cairo_rectangle_int_t rect;
-  int n_rects, i;
-
-  n_rects = cairo_region_num_rectangles (region);
-
-  for (i = 0; i < n_rects; i++)
-    {
-      cairo_region_get_rectangle (region, i, &rect);
-      XClearArea (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window),
-                  rect.x, rect.y,
-                  rect.width, rect.height,
-                  send_expose);
-    }
-}
-
 static void
 gdk_window_x11_raise (GdkWindow *window)
 {
@@ -5474,7 +5454,6 @@ gdk_window_impl_iface_init (GdkWindowImplIface *iface)
   iface->set_background = gdk_window_x11_set_background;
   iface->set_back_pixmap = gdk_window_x11_set_back_pixmap;
   iface->reparent = gdk_window_x11_reparent;
-  iface->clear_region = gdk_window_x11_clear_region;
   iface->set_device_cursor = gdk_window_x11_set_device_cursor;
   iface->get_geometry = gdk_window_x11_get_geometry;
   iface->get_root_coords = gdk_window_x11_get_root_coords;